home *** CD-ROM | disk | FTP | other *** search
- /* factorization of a number n*/
-
- #include "defs.h"
-
- int *am_factorize(int n, int *factors)
- {
- int a;
- int i = 0;
- int *_am_fact_array;
-
- if((_am_fact_array=(int*)malloc(32*sizeof(int)))==NULL)
- return 0;
-
- if(n<0)
- n = -n;
-
- if(n <= 1)
- return 0;
-
- while((n&1) == 0)
- {
- _am_fact_array[i++] = 2;
- n >>= 1;
- }
-
- for(a = 1; _am_pp_init[a] <= n; a++)
- {
- while((n%_am_primearray_init[a]) == 0)
- {
- _am_fact_array[i++] = _am_primearray_init[a];
- n /= _am_primearray_init[a];
- }
- }
- if(n > 1)
- _am_fact_array[i++] = n;
-
- _am_fact_array[i] = 0;
- *factors = i;
-
- return _am_fact_array;
- }